package com.bjpowernode.ba04;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @Value: 简单类型的属性赋值
 * 属性： value是string类型的，表示简单类型的属性值
 * 位置：1.在属性定义的上面，无需set方法，推荐使用
 *      2.在set方法上面
 */

//省略value ，最常用方式
@Component("myStudent")
public class Student {
    @Value("张三")
    private  String name;
    private  Integer age;

    /**
     * 引用类型
     * @Autowired: spring框架提供的注解，实现引用类型的赋值
     * sspring中通过注解给应用类型赋值，使用的是自动注入原理。
     * 支持byName、byType
     *
     * @Autowired：默认使用的是byType自动注入
     *
     * 位置：1，在属性定义的上面，无需set方法，推荐使用
     *      2.在set方法上面
     *
     * 如果要使用byName方式，需要做的是：
     * 1. 在属性上面加上@Autowired
     * 2. 在属性上面加上@Qualifier（value="bean的id"）：表示使用指定名称的bean完成赋值
     */
    @Autowired
    @Qualifier("mySchool")
    private School school;

    public Student(){
        System.out.println("无参数构造");
    }


//    public void setName(String name) {
//        this.name = name;
//    }
    @Value( "23")
    public void setAge(Integer age) {
        System.out.println("aa:"+age);
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", school=" + school +
                '}';
    }
}
